home *** CD-ROM | disk | FTP | other *** search
- gadutil.library/GU_LayoutGadgetsA gadutil.library/GU_LayoutGadgetsA
-
- NAME
- GU_LayoutGadgetsA -- Formats an array of GadTools gadgets.
-
- SYNOPSIS
- gad_info = GU_LayoutGadgetsA(gad_list, gadgets, screen, taglist)
- D0,A0 A0 A1 A2 A3
-
- APTR GU_LayoutGadgetsA(struct Gadget **, struct LayoutGadget *,
- struct Screen *, struct TagItem *);
-
- FUNCTION
- Creates a laid-out gadget list from a LayoutGadget array, which
- describes each gadget you want to create. Gadgets you create can
- be any of the gadget kinds supported by GadTools, as well as any
- of the extended gadget kinds provided by GadUtil.
- The gadgets created by this routine, can easily be defined so that
- they adjust their sizes and positions to accomodate fonts of any
- size, and also adapt to different locale strings.
-
- INPUTS
- gad_list - a pointer to the gadget list pointer. This will be
- ready to pass to OpenWindowTagList() or AddGList().
-
- gadgets - an array of LayoutGadget structures. Each element in
- the array describes one of the gadgets that you will
- be creating. Each LayoutGadget structure in the array
- should be initialized as follows:
-
- lg_GadgetID - the ID for this gadget. An ID of -1
- terminates the array. Don't use gadget ID's
- in the range 65000(-536) to 65535 (-1). These
- may be used internally in later versions of
- GadUtil.
-
- lg_LayoutTags - tags that describes each gadget to
- create. These tags is used to calculate
- positions, sizes and other attributes
- of the created gadgets.
-
- lg_GadToolsTags - additional tags for GadTools gadgets.
- This would be the same set of tags that
- you might pass to CreateGadgetA() if
- you were using GadTools directly.
-
- lg_Gadget - the pointer to the Gadget structure created
- for this gadget will be placed here. You
- should initialize this field to NULL. The
- gadget structure created should be considered
- READ ONLY! This field will contain a pointer
- to a struct BBoxData, if the created gadget
- kind is a BEVELBOX_KIND or a LABEL_KIND.
-
- Assembly language programmers can use the macro GADGET:
-
- GADGET GadgetID, Gad_LayoutTags, Gad_GadToolsTags
-
- screen - a pointer to the screen that the gadgets will be created
- for. This is required, so that the layuot routines can
- get display info about the screen where the rendering
- will be done. Use LockPubScreen() to use a public screen,
- or OpenScreenTagList(), if you want to use your own screen.
-
- taglist - pointer to an array of tags providing optional extra
- parameters, or NULL.
-
- These tags can be used here:
-
- GU_RightExtreme (ULONG *)
- A pointer to a longword that is used to store the
- rightmost point that a gadget will exist in.
-
- GU_LowerExtreme (ULONG *)
- A pointer to a longword that is used to store the
- lowermost point that a gadget woll exist in.
-
- GU_Catalog (struct Catalog *)
- A pointer to the programs translation catalog. NULL
- indicates that the program should use the internal
- strings. You must open the catalog by yourself (use
- GU_OpenCatalog() or locale/OpenCatalog). The
- GU_AppStrings tag MUST be used together with this tag.
-
- GU_DefTextAttr (struct TextAttr *)
- Specifies the default font to use with all gadgets. Can
- be overridden with GU_TextAttr tag for each gadget.
-
- GU_AppStrings (struct AppString *)
- A pointer to an array of AppString structures. These
- strutures contains the programs internal strings. This
- tag must be used together with the GU_Catalog tag.
-
- GU_BorderLeft (ULONG)
- Size of the window's left border.
-
- GU_BorderTop (ULONG)
- Size of the window's top border.
-
- GU_NoCreate (BOOL)
- Don't create any gadgets. Useful to determine if the
- window will fit on the screen etc.
-
- GU_MinimumIDCMP (ULONG *)
- A pointer to a longword that is used to store the
- minimum required IDCMP flags, so that all gadgets will
- work. The longword can already be initialized, and any
- new needed IDCMP flags will be appended to that
- longword.
-
- TAGS
-
- Tags for the gadgets lg_LayoutTags taglist. The other tags can be found in
- the autodoc to gadtools.library/CreateGadgetA().
-
- GU_GadgetKind (ULONG)
- Can be any of the standard GadTools gadget kinds, or one of the
- extensions provided by GadUtil. Currently extended types are:
-
- IMAGE_KIND
- A gadget that uses an Intuition Image structure for its
- contents. Selected and unselected states can use different
- images. The images are centered automatically.
-
- The value in the LayoutGadget's lg_Gadget field is a pointer to
- a Gadget structure.
-
- Extra tags for IMAGE_KIND:
-
- GUIM_Image (struct Image *)
- Image for the gadget in its unselected state. This is
- the only required (extra) tag for IMAGE_KIND gadgets.
-
- GUIM_SelectImg (struct Image *)
- Image for the gadget in its selected state. If this tag
- is omitted, the selected image will be the same as the
- unselected, and only the border and the background color
- will change (depending on the GUIM_BOOPSILook tag).
-
- GUIM_ReadOnly (BOOL)
- TRUE to create a read-only image gadget.
-
- GUIM_BOOPSILook (BOOL)
- This tag will allow the programmer to select how the
- secondary image should be shown, if only one image is
- used for the gadget. Defaults to TRUE, which means that
- the background color will change when the user selects
- the gadget.
-
- DRAWER_KIND
- A "select drawer" image button. This can be used to select
- a path, but is often used to select files.
-
- The value in the LayoutGadget's lg_Gadget field is a pointer to
- a Gadget structure.
-
- FILE_KIND
- A "select file" image button. This can be used to allow the
- user to select a file. Most programs uses the DRAWER_KIND
- for both file and path selection.
-
- The value in the LayoutGadget's lg_Gadget field is a pointer to
- a Gadget structure.
-
- BEVELBOX_KIND
- A GadTools bevelbox. Use this to avoid the use of absolute
- sizing of bevelboxes. All bevel box kinds from OS3.0 is
- supported, even if the computer only has OS2.0.
-
- The function GU_RefreshBoxes() can be used to redraw all
- bevelboxes.
-
- The value in the LayoutGadget's lg_Gadget field is a pointer to
- a BBoxData structure.
-
- Extra tags for BEVELBOX_KIND:
-
- GUBB_Recessed (BOOL)
- Create a recessed ("pushed in") bevel box. Differs from
- the GadTools tag GTBB_Recessed, in that it works with
- both TRUE and FALSE as parameter. GadTools creates a
- recessed box independent from the given value.
-
- Defaults to FALSE.
-
- GUBB_FrameType (ULONG)
- Determines what kind of box this function renders. The
- current available alternatives are:
-
- BFT_BUTTON - Generates a box like what is used around
- a GadTools BUTTON_KIND gadget.
-
- BFT_RIDGE - Generates a box like what is used around
- a GadTools STRING_KIND gadget.
-
- BFT_DROPBOX - Generates a box suitable for a standard
- icon drop box imagery.
-
- BFT_HORIZBAR - Generates a horizontal shadowed line.
- Can also be used to draw a normal line,
- using 1 for the line's height.
-
- BFT_VERTBAR - Generates a vertical shadowed line. Can
- also be used to draw a normal line, using
- 1 for the line's width.
-
- Defaults to BFT_BUTTON.
-
- GUBB_TextColor (ULONG)
- Selects which color to print the title text in. Only useful
- for a bevelbox with a title. Defaults to the color of the
- TEXTPEN.
-
- GUBB_TextPen (ULONG)
- Selects which pen to print the title text in. Only
- useful for a bevelbox with a title. Defaults to TEXTPEN.
- This tag overrides the GUBB_TextColor tag.
-
- GUBB_Flags (ULONG)
- Flags for text placement, text shadowing and 3D text:
-
- Y-pos flags
- ~~~~~~~~~~~
- BB_TEXT_ABOVE - Places the bevel box text above the upper
- border of the box ___Example___
-
- BB_TEXT_IN - Places the bevel box text at the upper
- border of the box ---Example---
-
- BB_TEXT_BELOW - Places the bevel box text below the upper
- border of the box ___ ___
- Example
- X-pos flags
- ~~~~~~~~~~~
- BB_TEXT_CENTER - Places the bevel box text in the middle
- of the upper border ---Example---
-
- BB_TEXT_LEFT - Places the bevel box text 8 pixels from
- the left edge of the box -Example-----
-
- BB_TEXT_RIGHT - Places the bevel box text 8 pixels from
- the right edge of the box -----Example-
-
- Combined flags
- ~~~~~~~~~~~~~~
- BB_TEXT_ABOVE_CENTER - BB_TEXT_ABOVE + BB_TEXT_CENTER
- BB_TEXT_ABOVE_LEFT - BB_TEXT_ABOVE + BB_TEXT_LEFT
- BB_TEXT_ABOVE_RIGHT - BB_TEXT_ABOVE + BB_TEXT_RIGHT
-
- BB_TEXT_IN_CENTER - BB_TEXT_IN + BB_TEXT_CENTER
- BB_TEXT_IN_LEFT - BB_TEXT_IN + BB_TEXT_LEFT
- BB_TEXT_IN_RIGHT - BB_TEXT_IN + BB_TEXT_RIGHT
-
- BB_TEXT_BELOW_CENTER - BB_TEXT_BELOW + BB_TEXT_CENTER
- BB_TEXT_BELOW_LEFT - BB_TEXT_BELOW + BB_TEXT_LEFT
- BB_TEXT_BELOW_RIGHT - BB_TEXT_BELOW + BB_TEXT_RIGHT
-
- Default is BB_TEXT_ABOVE|BB_TEXT_CENTER. Combine the x and y
- position flags by OR:ing them together. Don't combine two X
- or two Y flags together.
-
- Shadow placement flags
- ~~~~~~~~~~~~~~~~~~~~~~
- BB_SHADOW_DR - Places the bevel box text shadow one pixel
- below and to the right of the text.
-
- BB_SHADOW_UR - Places the bevel box text shadow one pixel
- above and to the right of the text.
-
- BB_SHADOW_DL - Places the bevel box text shadow one pixel
- below and to the left of the text.
-
- BB_SHADOW_UL - Places the bevel box text shadow one pixel
- above and to the left of the text.
-
- BB_SUNAT_UL - Another name for BB_SHADOW_DR
- BB_SUNAT_DL - Another name for BB_SHADOW_UR
- BB_SUNAT_UR - Another name for BB_SHADOW_DL
- BB_SUNAT_DR - Another name for BB_SHADOW_UL
-
- Default is BB_SHADOW_DR (BB_SUNAT_UL).
-
- BB_3DTEXT - This flag can be used in place of the tag
- GUBB_3DText, TRUE
-
- GUBB_3DText (BOOL)
- Enables the shadow on the bevel box text. This tag must be
- used if GUBB_ShadowColor or GUBB_ShadowPen isn't used.
- Another way to enable 3D text is to set the flag BB_3DTEXT
- in the GUBB_Flags tag.
-
- GUBB_ShadowColor (ULONG)
- Selects which color to print the shadow text in. Only useful
- for a bevelbox with a title. Defaults to the color of the
- SHADOWPEN.
-
- GUBB_ShadowPen (ULONG)
- Selects which pen to print the shadow text in. Only useful
- for a bevelbox with a title. Defaults to SHADOWPEN.
- This tag overrides the GUBB_ShadowColor tag.
-
- PROGRESS_KIND
- Gadget used to display a value out of a total. Can be used to
- display the progress of a search, a diskcopy or anything else.
-
- The value in the LayoutGadget's lg_Gadget field is a pointer to
- a ProgressGad structure.
-
- Extra tags for PROGRESS_KIND:
-
- GUPR_FillColor (ULONG)
- Selects which color to use to paint the current value of
- the progress requester with. Defaults to the color of the
- FILLPEN.
-
- GUPR_FillPen (ULONG)
- Selects which pen to use to paint the current value of
- the progress requester with. Defaults to the FILLPEN.
- This tag overrides the GUPR_FillColor tag.
-
- GUPR_BackColor (ULONG)
- Selects which color to fill the background of the progress
- requester with. Defaults to the color of the BACKGROUNDPEN.
-
- GUPR_BackPen (ULONG)
- Selects which pen to fill the background of the progress
- requester with. Defaults to the BACKGROUNDPEN.
- This tag overrides the GUPR_BackColor tag.
-
- GUPR_Current (ULONG)
- The initial current value of the progress requester. The
- gadget's current value may be changed later by directly
- modifying the pg_Current field of the ProgressGad structure.
- Use GU_UpdateProgress to redraw the progress requester with
- the new value. The pg_Current field must not be larger than
- 4.294.967.295 / the width of the progress gadget. A "normal"
- width of 410 pixels allows a current value of 10.737.418.
- Defaults to 0.
-
- GUPR_Total (ULONG)
- The initial total value of the progress requester. The
- gadget's total value may be changed later by directly
- modifying the pg_Total field of the ProgressGad structure.
- Use GU_UpdateProgress() to redraw the progress requester with
- the new value. The total value can be as large as a longword
- allows (4.294.967.295), but you can't display a current value
- larger than 4.294.967.295 / the width of the progress gadget.
- Defaults to 100.
-
- LABEL_KIND
- A text label. Use this to avoid the use of absolute placement
- of text that you print into the window. Supports the most of
- the text placement and shadow flags for the BEVELBOX_KIND.
-
- The function GU_RefreshBoxes() can be used to redraw all
- text created by LABEL_KIND gadgets.
-
- The value in the LayoutGadget's lg_Gadget field is a pointer to
- a BBoxData structure.
-
- Extra tags for LABEL_KIND:
-
- GULB_TextColor (ULONG)
- Selects which color to print the text in. Defaults to the
- color of the TEXTPEN.
-
- GULB_TextPen (ULONG)
- Selects which pen to print the text in. Defaults to TEXTPEN.
- This tag overrides the GULB_TextColor tag.
-
- GULB_Flags (ULONG)
- Flags for text placement, text shadowing and 3D text:
-
- ___1_____2_____3___
- |_____|_____|_____| A
- |_____|_____|_____| B
- |_____|_____|_____| C
-
- Y-pos flags
- ~~~~~~~~~~~
- LB_TEXT_TOP - Places the topmost point of the text below
- the upper border of the box (row A)
-
- LB_TEXT_MIDDLE - Places the text centered in the box, not
- counting in the part of the text that is
- below the font's baseline (row B)
-
- LB_TEXT_BOTTOM - Places the text at the bottom of the box.
- Any part of the text that is below the
- baseline will be below the box (row C)
-
- X-pos flags
- ~~~~~~~~~~~
- LB_TEXT_CENTER - Places the text centered on the width of
- the box (column 2).
-
- LB_TEXT_LEFT - Places the text left adjusted in the box
- (column 1)
-
- LB_TEXT_RIGHT - Places the text right adjusted in the box
- (column 3)
-
- Combined flags
- ~~~~~~~~~~~~~~
- LB_TEXT_TOP_CENTER - LB_TEXT_TOP + LB_TEXT_CENTER
- LB_TEXT_TOP_LEFT - LB_TEXT_TOP + LB_TEXT_LEFT
- LB_TEXT_TOP_RIGHT - LB_TEXT_TOP + LB_TEXT_RIGHT
-
- LB_TEXT_MIDDLE_CENTER - LB_TEXT_MIDDLE + LB_TEXT_CENTER
- LB_TEXT_MIDDLE_LEFT - LB_TEXT_MIDDLE + LB_TEXT_LEFT
- LB_TEXT_MIDDLE_RIGHT - LB_TEXT_MIDDLE + LB_TEXT_RIGHT
-
- LB_TEXT_BOTTOM_CENTER - LB_TEXT_BOTTOM + LB_TEXT_CENTER
- LB_TEXT_BOTTOM_LEFT - LB_TEXT_BOTTOM + LB_TEXT_LEFT
- LB_TEXT_BOTTOM_RIGHT - LB_TEXT_BOTTOM + LB_TEXT_RIGHT
-
- Default is LB_TEXT_TOP|LB_TEXT_CENTER. Combine the x and y
- position flags by OR:ing them together. Don't combine two X
- or two Y flags together.
-
- Shadow placement flags
- ~~~~~~~~~~~~~~~~~~~~~~
- LB_SHADOW_DR - Places the bevel box text shadow one pixel
- below and to the right of the text.
-
- LB_SHADOW_UR - Places the bevel box text shadow one pixel
- above and to the right of the text.
-
- LB_SHADOW_DL - Places the bevel box text shadow one pixel
- below and to the left of the text.
-
- LB_SHADOW_UL - Places the bevel box text shadow one pixel
- above and to the left of the text.
-
- LB_SUNAT_UL - Another name for LB_SHADOW_DR
- LB_SUNAT_DL - Another name for LB_SHADOW_UR
- LB_SUNAT_UR - Another name for LB_SHADOW_DL
- LB_SUNAT_DR - Another name for LB_SHADOW_UL
-
- Default is LB_SHADOW_DR (LB_SUNAT_UL).
-
- LB_3DTEXT - This flag can be used in place of the tag
- GULB_3DText, TRUE
-
- GULB_3DText (BOOL)
- Enables the shadow on the text. This tag must be used if
- GULB_ShadowColor or GULB_ShadowPen isn't used. Another
- way to enable 3D text is to set the flag LB_3DTEXT in the
- GULB_Flags tag.
-
- GULB_ShadowColor (ULONG)
- Selects which color to print the shadow text in. Defaults to
- the color of the SHADOWPEN.
-
- GULB_ShadowPen (ULONG)
- Selects which pen to print the shadow text in. Defaults to
- SHADOWPEN. This tag overrides the GULB_ShadowColor tag.
-
- Changed tags, and additions to GadTools:
-
- LISTVIEW_KIND
-
- GTLV_ShowSelected (UWORD id)
-
- This tag was changed, so that you don't have to create the
- string gadget before all other gadgets. The difference from
- this tag in GadTools, is that we now have to give the ID of
- the string gadget to use to show the selected item.
-
- An example of a valid (and probably most useful) gadget to
- use for GTLV_ShowSelected:
-
- ShowSelGad:
- dc.l GU_GadgetKind, STRING_KIND, GU_AutoHeight, 4
- dc.l GU_DupeWidth, GAD_LISTVIEW, GU_GadgetText, NULL
- dc.l TAG_DONE
-
- This gadget MUST be before the LISTVIEW gadget in the LayoutGadget
- array.
-
- Special:
-
- ti_Data = -1 Creates a read-only gadget below the listview,
- same as for GTLV_ShowSelected, 0 for GadTools.
-
- ti_Data = x Gadget ID for the gadget that the selected item
- should be displayed in. Same as GadTools reaction
- on a gadget pointer in ti_Data.
-
- This gadget's ti_Data field will be changed during the creation
- of the gadget, but will be changed back before GU_LayoutGadgets
- returns.
-
- MX_KIND
- The gng_GadgetText field in the NewGadget structure can be used
- even with MX_KIND gadgets. This should have been included in
- GadTools. The gadget text will always be placed ABOVE the gadget,
- on the same side as the other texts for the gadget. Positions are
- checked against WBPattern & SerialPrefs to get them "right". The
- GU_GadgetText and GU_LocaleText tags are used to access this field.
-
-
- Tags for all gadget kinds:
-
- Gadget width control:
-
- GU_Width (UWORD wid)
- Absolute width of the gadget. Not recommended to use for other
- gadgets than IMAGE_KIND, DRAWER_KIND and FILE_KIND.
-
- GU_DupeWidth (UWORD id)
- Duplicate the width of another gadget.
-
- GU_AutoWidth (WORD add)
- Width = length of text label + ti_Data. For CYCLE_KIND gadgets,
- the gadget width will be calculated by checking the length of
- all alternatives and using the one that is widest + 26 as width.
-
- GU_Columns (UWORD numcols)
- Set the gadget width so that approximately ti_Data columns of
- text will fit.
-
- GU_AddWidth (WORD add)
- Add ti_Data to the total width calculation.
-
- GU_MinWidth (UWORD wid)
- Make the gadget at least ti_Data pixels wide.
-
- GU_MaxWidth (UWORD wid)
- Make the gadget at most ti_Data pixels wide.
-
- GU_AddWidChar (WORD chars)
- Add the length of ti_Data characters to the total width calculation.
-
- GU_FractWidth (LONG parts)
- Divide or multiply the gadget's width with ti_Data. A positive
- value divides the gadget's width by the ti_Data, a negative ti_Data
- multiplies the gadget's width with ti_Data.
-
- Gadget height control:
-
- GU_Height (UWORD hei)
- Absolute height of the gadget. Not recommended to use for other
- gadgets than IMAGE_KIND, DRAWER_KIND and FILE_KIND.
-
- GU_DupeHeight (UWORD id)
- Duplicate the height of another gadget.
-
- GU_AutoHeight (WORD add)
- Height = height of the gadget's font + ti_Data. This tag doesn't
- work as it should with MX_KIND gadgets. Will be fixed later.
- Use GU_HeightFactor or GU_Height for MX_KIND until this is fixed.
-
- GU_HeightFactor (UWORD numlines)
- Set the gadget height to approximately ti_Data lines.
-
- GU_AddHeight (WORD add)
- Add ti_Data to the total height calculation.
-
- GU_MinHeight (UWORD wid)
- Make the gadget at least ti_Data pixels high.
-
- GU_MaxHeight (UWORD wid)
- Make the gadget at most ti_Data pixels high.
-
- GU_AddHeiLines (WORD numlines)
- Add the height of ti_Data/2 lines to the final height calculation.
- The numlines argument is given in units of 1/2 lines to get
- better resolution (ti_Data of 4 means that the height of 2
- lines should be added).
-
- GU_FractHeight (LONG parts)
- Divide or multiply the gadget's height with ti_Data. A positive
- value divides the gadget's height by the ti_Data, a negative ti_Data
- multiplies the gadget's height with ti_Data.
-
- Gadget top edge control:
-
- GU_Top, GU_TopRel and GU_AlignTop locks the top edge of the gadget, and
- allows any bottom edge control tag to adjust the height, so that both
- top and bottom edges will be correct.
-
- GU_Top (UWORD ypos)
- Absolute top edge of the gadget. Not recommended to use for other
- gadgets than the top-most gadgets.
-
- GU_TopRel (UWORD id)
- Make the top edge relative to another gadgets bottom edge. This
- gadget will be placed BELOW the given gadget.
-
- GU_AddTop (WORD add)
- Add ti_Data to the final top edge calculation.
-
- GU_AlignTop (UWORD id)
- Align the top edge of the gadget with another gadgets top edge.
-
- GU_AdjustTop (WORD add)
- Add the height of the text font + ti_Data to the top edge.
-
- GU_AddTopLines (WORD numlines)
- Add the height of ti_Data/2 lines to the final top edge. The
- numlines argument is given in units of 1/2 lines to get better
- resolution (ti_Data of 4 means that the height of 2 lines
- should be added).
-
- Gadget bottom edge control:
-
- GU_Bottom, GU_BottomRel and GU_AlignBottom locks the bottom edge of the
- gadget, and allows any top edge control tag to adjust the height, so that
- both top and bottom edges will be correct.
-
- GU_Bottom (UWORD ypos)
- Absolute bottom edge of the gadget. Not recommended to use for other
- gadgets than the bottom-most gadgets. Should not be necessary to use
- at all.
-
- GU_BottomRel (UWORD id)
- Make the bottom edge relative to another gadgets top edge. This
- gadget will be placed ABOVE the given gadget.
-
- GU_AddBottom (WORD add)
- Add ti_Data to the final bottom edge calculation.
-
- GU_AlignBottom (UWORD id)
- Align the bottom edge of the gadget with another gadgets bottom edge.
-
- GU_AdjustBottom (WORD add)
- Subtract the height of the gadget's font + ti_Data from the top edge.
- This will move the gadget UPWARDS (ti_Data + font height) pixels.
-
- Gadget left edge control:
-
- GU_Left, GU_LeftRel and GU_AlignLeft locks the left edge of the gadget,
- and allows any right edge control tag to adjust the width, so that both
- left and right edges will be correct.
-
- GU_Left (UWORD xpos)
- Absoulute left edge of the gadget. Not recommended to use for other
- gadgets than the left-most gadgets.
-
- GU_LeftRel (UWORD id)
- Make the left edge relative to another gadgets right edge. This
- gadget will be placed TO THE RIGHT of the given gadget.
-
- GU_AddLeft (WORD add)
- Add ti_Data to the final left edge calculation.
-
- GU_AlignLeft (UWORD id)
- Align the left edge of the gadget with another gadgets left edge.
-
- GU_AdjustLeft (WORD add)
- Add the width of the gadget label + ti_Data to the left edge.
-
- GU_AddLeftChar (WORD chars)
- Add the length of ti_Data characters to the left edge.
-
- Gadget right edge control:
-
- GU_Right, GU_RightRel and GU_AlignRight locks the right edge of the
- gadget, and allows any left edge control tag to adjust the width, so
- that both left and right edges will be correct.
-
- GU_Right (UWORD xpos)
- Absoulute right edge of the gadget. Not recommended to use for other
- gadgets than the right-most gadgets. Should not be necessary to use
- at all.
-
- GU_RightRel (UWORD id)
- Make the right edge relative to another gadgets left edge. This
- gadget will be placed TO THE LEFT of the given gadget.
-
- GU_AddRight (WORD add)
- Add ti_Data to the final right edge calculation.
-
- GU_AlignRight (UWORD id)
- Align the right edge of the gadget with another gadgets right edge.
-
- GU_AdjustRight (WORD add)
- Add the width of the gadget label + ti_Data to the left edge.
-
- Other tags:
-
- GU_ToggleSelect (BOOL)
- Create a toggle select gadget. Works with BUTTON_KIND and IMAGE_KIND
- gadgets.
-
- GU_Selected (BOOL)
- Set the initial value of a toggle select gadget.
-
- GU_Hotkey (CHAR)
- Hotkey that should simulate a press (release) of a gadget.
-
- GU_HotkeyCase (BOOL)
- Make the hotkey case-sensitive. Default is not case sensitive.
-
- GU_LabelHotkey (BOOL)
- Get the hotkey directly from the gadget's label. The hotkey can
- be case-sensitive, but not for CYCLE, LISTVIEW and MX gadgets.
-
- GU_RawKey (BYTE)
- Use a rawkey as a gadget hotkey. May not be case-sensitive.
-
- GU_HelpGadget (ULONG)
- GadgetID of the TEXT_KIND or the STRING_KIND to show the gadget's
- help text in.
-
- GU_HelpText (UBYTE *)
- The text that is shown in the help gadget (GU_HelpGadget) when the
- mouse pointer is placed on the gadget.
-
- GU_LocaleHelp (ULONG stringid)
- Get gadget help text from a catalog. This makes it easy to create
- localized help strings in the program.
- Tags that gives access to other fields in the NewGadget structure:
-
- GU_GadgetText (UBYTE *)
- A pointer to the gadget's label. Will be copied directly into the
- gng_GadgetText field of the NewGadget structure.
-
- GU_TextAttr (struct TextAttr *)
- A pointer to an initialized TextAttr structure (to select the font).
- Will be copied directly into the gng_TextAttr field of the NewGadget
- structure.
-
- GU_Flags (ULONG)
- Gadget flags. Currently available flags are as for GadTools, but
- here is a short list of them:
-
- PLACETEXT_LEFT - Place the gadget label right aligned on the left
- side of the gadget.
-
- PLACETEXT_RIGHT - Place the gadget label left aligned on the right
- side of the gadget.
-
- PLACETEXT_ABOVE - Place the gadget label centered above the gadget.
-
- PLACETEXT_BELOW - Place the gadget label centered below the gadget.
-
- PLACETEXT_IN - Place the gadget label centered inside the gadget.
-
- NG_HIGHLABEL - Highlight the label (render it using SHINEPEN).
-
- *** GU_UserData (APTR) *** REMOVED in v37.7 ***
-
- GU_LocaleText (ULONG stringid)
- Get gadget label from a catalog. This allows easy localization of
- all new programs.
-
-
- RESULT
- gad_info - a pointer to a private structure. You must keep this
- value and pass it to GU_FreeLayoutGadgets() later on
- in order to free up all resources used by your gadgets.
- This pointer is also used in a lot of other functions
- in this library.
-
- NOTES
- You must be careful with the taglist in the lg_LayoutTags field.
- Tags are processed sequentally in the order you give them in, and
- if a tag references another gadget (eg. the GL_TopRel tag), then
- processing of the current gadget halts while the referenced gadget
- is processed (if it has not already been processed). Problems can
- occur if this gadget refers back to the original gadget that
- referenced if, if it is referring to a field that has not yet been
- processed in that gadget.
-
- Also note that you do not have to specify any tags that do not
- change from gadget to gadget. Just be sure that you know in which
- order the gadgets are processed (eg. relatives etc).
-
- Another thing to note, is that we have tried to make the processing
- of position and width / height tags as usable as possible, what I
- mean with this, is that if you eg first define the left edge and
- then define the right edge, the width will change. BUT, there are
- special cases when this isn't true. This is because we have tried
- out this and decided that this was the best way to do it.
-
- Here comes some examples of the special cases;
-
- dc.l GU_AlignLeft, GAD_1 ; Left edge aligned with GAD_1's left.
- dc.l GU_AlignRight, GAD_2 ; This stretches the gadget, so that
- ; both the left and right edges are
- ; positioned as defined.
- ; Then, if we want to move the right edge 2 pixels right, and the left
- ; edge two pixels right, we might try this:
-
- dc.l GU_AddLeft, -2 ; This works as we want, it moves the
- ; left edge to the right place, but it
- ; also moves the whole gadget two
- ; pixels left..
-
- dc.l GU_AddRight, 2 ; <- This is a common mistake. This
- ; moves the whole gadget to the right.
- ; Ie. it is moved back to the old
- ; position, not as we wanted...
-
- ; But if we replace the previous line with the following;
-
- dc.l GU_AddWith,4 ; This works just as we wanted it to.
- ; Now the gadget should be 4 pixels
- ; wider, two to the left and two to
- ; the right.
-
- The same goes for GU_AddHeight and GU_AddBottom etc.
-
- This is actually a feature. Sometimes you might want to move the whole
- button, so we made it work this way.
-
-
- SEE ALSO
- GU_FreeLayoutGadgets(), GU_CreateGadgetA(), gadtools/CreateGadgetA()
- GU_RefreshWindow(), GU_RefreshBoxes(), GU_UpdateProgress()
-